# figura global de confirmados
# 2020-03-15 version actual: 2021-04-08
# GAD
###############################################
options(allow_html=TRUE)
# Bibliotecas a importar
check_packages <- function(packages) {
if (all(packages %in% rownames(installed.packages()))) {
TRUE
} else{
cat(
"Instalar los siguientes packages antes de ejecutar el presente script\n",
packages[!(packages %in% rownames(installed.packages()))],
"\n"
)
}
}
packages_needed <- c("ggplot2", "ggrepel", "plotly",
"lubridate", "htmlwidgets" , "RColorBrewer",
"sqldf", "grid", "data.table", "readr" )
check_packages(packages_needed)
## [1] TRUE
library(ggplot2)
library(ggrepel)
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(htmlwidgets)
library(RColorBrewer)
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
library(grid)
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:lubridate':
##
## hour, isoweek, mday, minute, month, quarter, second, wday, week,
## yday, year
library(readr)
#library(ggfortify)
#library(reshape2)
############################################## Leer
# time_series_covid19_confirmed_global.csv
URL <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/"
url_archivo <- paste(URL,"time_series_covid19_confirmed_global.csv", sep = "")
COVID_19_h <- read.csv(url_archivo, sep = ",", header = T)
############################################## preparo los datos
COVID_19_h$Lat <- NULL
COVID_19_h$Long <- NULL
COVID_19_h$Province.State <- NULL
colnames(COVID_19_h)
## [1] "Country.Region" "X1.22.20" "X1.23.20" "X1.24.20"
## [5] "X1.25.20" "X1.26.20" "X1.27.20" "X1.28.20"
## [9] "X1.29.20" "X1.30.20" "X1.31.20" "X2.1.20"
## [13] "X2.2.20" "X2.3.20" "X2.4.20" "X2.5.20"
## [17] "X2.6.20" "X2.7.20" "X2.8.20" "X2.9.20"
## [21] "X2.10.20" "X2.11.20" "X2.12.20" "X2.13.20"
## [25] "X2.14.20" "X2.15.20" "X2.16.20" "X2.17.20"
## [29] "X2.18.20" "X2.19.20" "X2.20.20" "X2.21.20"
## [33] "X2.22.20" "X2.23.20" "X2.24.20" "X2.25.20"
## [37] "X2.26.20" "X2.27.20" "X2.28.20" "X2.29.20"
## [41] "X3.1.20" "X3.2.20" "X3.3.20" "X3.4.20"
## [45] "X3.5.20" "X3.6.20" "X3.7.20" "X3.8.20"
## [49] "X3.9.20" "X3.10.20" "X3.11.20" "X3.12.20"
## [53] "X3.13.20" "X3.14.20" "X3.15.20" "X3.16.20"
## [57] "X3.17.20" "X3.18.20" "X3.19.20" "X3.20.20"
## [61] "X3.21.20" "X3.22.20" "X3.23.20" "X3.24.20"
## [65] "X3.25.20" "X3.26.20" "X3.27.20" "X3.28.20"
## [69] "X3.29.20" "X3.30.20" "X3.31.20" "X4.1.20"
## [73] "X4.2.20" "X4.3.20" "X4.4.20" "X4.5.20"
## [77] "X4.6.20" "X4.7.20" "X4.8.20" "X4.9.20"
## [81] "X4.10.20" "X4.11.20" "X4.12.20" "X4.13.20"
## [85] "X4.14.20" "X4.15.20" "X4.16.20" "X4.17.20"
## [89] "X4.18.20" "X4.19.20" "X4.20.20" "X4.21.20"
## [93] "X4.22.20" "X4.23.20" "X4.24.20" "X4.25.20"
## [97] "X4.26.20" "X4.27.20" "X4.28.20" "X4.29.20"
## [101] "X4.30.20" "X5.1.20" "X5.2.20" "X5.3.20"
## [105] "X5.4.20" "X5.5.20" "X5.6.20" "X5.7.20"
## [109] "X5.8.20" "X5.9.20" "X5.10.20" "X5.11.20"
## [113] "X5.12.20" "X5.13.20" "X5.14.20" "X5.15.20"
## [117] "X5.16.20" "X5.17.20" "X5.18.20" "X5.19.20"
## [121] "X5.20.20" "X5.21.20" "X5.22.20" "X5.23.20"
## [125] "X5.24.20" "X5.25.20" "X5.26.20" "X5.27.20"
## [129] "X5.28.20" "X5.29.20" "X5.30.20" "X5.31.20"
## [133] "X6.1.20" "X6.2.20" "X6.3.20" "X6.4.20"
## [137] "X6.5.20" "X6.6.20" "X6.7.20" "X6.8.20"
## [141] "X6.9.20" "X6.10.20" "X6.11.20" "X6.12.20"
## [145] "X6.13.20" "X6.14.20" "X6.15.20" "X6.16.20"
## [149] "X6.17.20" "X6.18.20" "X6.19.20" "X6.20.20"
## [153] "X6.21.20" "X6.22.20" "X6.23.20" "X6.24.20"
## [157] "X6.25.20" "X6.26.20" "X6.27.20" "X6.28.20"
## [161] "X6.29.20" "X6.30.20" "X7.1.20" "X7.2.20"
## [165] "X7.3.20" "X7.4.20" "X7.5.20" "X7.6.20"
## [169] "X7.7.20" "X7.8.20" "X7.9.20" "X7.10.20"
## [173] "X7.11.20" "X7.12.20" "X7.13.20" "X7.14.20"
## [177] "X7.15.20" "X7.16.20" "X7.17.20" "X7.18.20"
## [181] "X7.19.20" "X7.20.20" "X7.21.20" "X7.22.20"
## [185] "X7.23.20" "X7.24.20" "X7.25.20" "X7.26.20"
## [189] "X7.27.20" "X7.28.20" "X7.29.20" "X7.30.20"
## [193] "X7.31.20" "X8.1.20" "X8.2.20" "X8.3.20"
## [197] "X8.4.20" "X8.5.20" "X8.6.20" "X8.7.20"
## [201] "X8.8.20" "X8.9.20" "X8.10.20" "X8.11.20"
## [205] "X8.12.20" "X8.13.20" "X8.14.20" "X8.15.20"
## [209] "X8.16.20" "X8.17.20" "X8.18.20" "X8.19.20"
## [213] "X8.20.20" "X8.21.20" "X8.22.20" "X8.23.20"
## [217] "X8.24.20" "X8.25.20" "X8.26.20" "X8.27.20"
## [221] "X8.28.20" "X8.29.20" "X8.30.20" "X8.31.20"
## [225] "X9.1.20" "X9.2.20" "X9.3.20" "X9.4.20"
## [229] "X9.5.20" "X9.6.20" "X9.7.20" "X9.8.20"
## [233] "X9.9.20" "X9.10.20" "X9.11.20" "X9.12.20"
## [237] "X9.13.20" "X9.14.20" "X9.15.20" "X9.16.20"
## [241] "X9.17.20" "X9.18.20" "X9.19.20" "X9.20.20"
## [245] "X9.21.20" "X9.22.20" "X9.23.20" "X9.24.20"
## [249] "X9.25.20" "X9.26.20" "X9.27.20" "X9.28.20"
## [253] "X9.29.20" "X9.30.20" "X10.1.20" "X10.2.20"
## [257] "X10.3.20" "X10.4.20" "X10.5.20" "X10.6.20"
## [261] "X10.7.20" "X10.8.20" "X10.9.20" "X10.10.20"
## [265] "X10.11.20" "X10.12.20" "X10.13.20" "X10.14.20"
## [269] "X10.15.20" "X10.16.20" "X10.17.20" "X10.18.20"
## [273] "X10.19.20" "X10.20.20" "X10.21.20" "X10.22.20"
## [277] "X10.23.20" "X10.24.20" "X10.25.20" "X10.26.20"
## [281] "X10.27.20" "X10.28.20" "X10.29.20" "X10.30.20"
## [285] "X10.31.20" "X11.1.20" "X11.2.20" "X11.3.20"
## [289] "X11.4.20" "X11.5.20" "X11.6.20" "X11.7.20"
## [293] "X11.8.20" "X11.9.20" "X11.10.20" "X11.11.20"
## [297] "X11.12.20" "X11.13.20" "X11.14.20" "X11.15.20"
## [301] "X11.16.20" "X11.17.20" "X11.18.20" "X11.19.20"
## [305] "X11.20.20" "X11.21.20" "X11.22.20" "X11.23.20"
## [309] "X11.24.20" "X11.25.20" "X11.26.20" "X11.27.20"
## [313] "X11.28.20" "X11.29.20" "X11.30.20" "X12.1.20"
## [317] "X12.2.20" "X12.3.20" "X12.4.20" "X12.5.20"
## [321] "X12.6.20" "X12.7.20" "X12.8.20" "X12.9.20"
## [325] "X12.10.20" "X12.11.20" "X12.12.20" "X12.13.20"
## [329] "X12.14.20" "X12.15.20" "X12.16.20" "X12.17.20"
## [333] "X12.18.20" "X12.19.20" "X12.20.20" "X12.21.20"
## [337] "X12.22.20" "X12.23.20" "X12.24.20" "X12.25.20"
## [341] "X12.26.20" "X12.27.20" "X12.28.20" "X12.29.20"
## [345] "X12.30.20" "X12.31.20" "X1.1.21" "X1.2.21"
## [349] "X1.3.21" "X1.4.21" "X1.5.21" "X1.6.21"
## [353] "X1.7.21" "X1.8.21" "X1.9.21" "X1.10.21"
## [357] "X1.11.21" "X1.12.21" "X1.13.21" "X1.14.21"
## [361] "X1.15.21" "X1.16.21" "X1.17.21" "X1.18.21"
## [365] "X1.19.21" "X1.20.21" "X1.21.21" "X1.22.21"
## [369] "X1.23.21" "X1.24.21" "X1.25.21" "X1.26.21"
## [373] "X1.27.21" "X1.28.21" "X1.29.21" "X1.30.21"
## [377] "X1.31.21" "X2.1.21" "X2.2.21" "X2.3.21"
## [381] "X2.4.21" "X2.5.21" "X2.6.21" "X2.7.21"
## [385] "X2.8.21" "X2.9.21" "X2.10.21" "X2.11.21"
## [389] "X2.12.21" "X2.13.21" "X2.14.21" "X2.15.21"
## [393] "X2.16.21" "X2.17.21" "X2.18.21" "X2.19.21"
## [397] "X2.20.21" "X2.21.21" "X2.22.21" "X2.23.21"
## [401] "X2.24.21" "X2.25.21" "X2.26.21" "X2.27.21"
## [405] "X2.28.21" "X3.1.21" "X3.2.21" "X3.3.21"
## [409] "X3.4.21" "X3.5.21" "X3.6.21" "X3.7.21"
## [413] "X3.8.21" "X3.9.21" "X3.10.21" "X3.11.21"
## [417] "X3.12.21" "X3.13.21" "X3.14.21" "X3.15.21"
## [421] "X3.16.21" "X3.17.21" "X3.18.21" "X3.19.21"
## [425] "X3.20.21" "X3.21.21" "X3.22.21" "X3.23.21"
## [429] "X3.24.21" "X3.25.21" "X3.26.21" "X3.27.21"
## [433] "X3.28.21" "X3.29.21" "X3.30.21" "X3.31.21"
## [437] "X4.1.21" "X4.2.21" "X4.3.21" "X4.4.21"
## [441] "X4.5.21" "X4.6.21" "X4.7.21" "X4.8.21"
# head(COVID_19_h, 5)
library(tidyr)
COVID_19 <- COVID_19_h %>% gather(date, casos, 2:ncol(COVID_19_h))
#COVID_19 <- melt(COVID_19_h, id.vars = "Country.Region") # otra forma de hacer lo mismo
colnames(COVID_19) <- c( "pais", "date", "casos")
COVID_19$date <- as.Date(as.character(COVID_19$date), format = "X%m.%d.%y")
# agrupo por fecha
casos_por_fecha <- COVID_19 %>% group_by(date) %>% summarise(casos = sum(casos))
# lo anterior en SQL seria:
# casos_por_fecha <- sqldf( "select date, sum(casos) casos
# from COVID_19
# group by date")
# -- ordenamos
#library(tidyverse)
datos <- arrange(casos_por_fecha, (casos_por_fecha$date) )
###############################################
# genero figura dinamica
g1 <- ggplot(datos ,aes(x = date, y = casos/1000000)) +
geom_point( size=1, color="blue") +
ggtitle("COVID_19 - Casos confirmados a nivel mundial") +
scale_x_date(date_breaks = "10 day", date_labels = "%d %b") +
#scale_y_continuous(limits = c(0, 100), breaks = seq(1, 5, 1)) +
theme(plot.title = element_text(lineheight = 1,face ='bold')) +
ylab("cantidad de casos en M") +
xlab("") +
labs(caption = "\nFuente: The Johns Hopkins University Center for Systems Science and Engineering (JHU CSSE)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# + geom_text(aes(label = round(porDiezMil,1)), position = position_stack(vjust = .5))
g1 <- ggplotly(g1, tooltip = c("casos")) %>%
layout(legend = list(
orientation = "h",
x = 0.7,
y = 1
)
)
g1